import {reqCartList,reqDeleteCartById,reqUpdateCheckedById} from '@/api'
const state = {
	cartList:[]
};
const mutations = {
    GETCARTLIST(state,cartList){
        state.cartList = cartList
    }
};
const actions = {
	//获取购物车列表的数据
    async getCartList({commit}){
        let result  = await reqCartList();
        if(result.code == 200){
            commit("GETCARTLIST",result.data);
        }
    },
	// 删除购物车某一个产品
	async deleteCartListBySkuId({commit},skuId){
		let result = await reqDeleteCartById(skuId);
		if(result.code==200){
			return 'ok';
		}else{
			return Promise.reject(new Error('删除失败'));
		}
	},
    	// 修改购物车某一个产品的选中状态
	async updateCheckedById({commit},{skuId,isChecked}){
		let result = await reqUpdateCheckedById(skuId,isChecked);
		if(result.code==200){
			return 'ok';
		}else{
			return Promise.reject(new Error('faile'));
		}
	},
	// 删除全部勾选的产品
	deleteAllCheckedCart({dispatch,getters}){
		let PromiseAll = [];
		getters.cartList.cartInfoList.forEach(item=>{
			let promise = item.isChecked==1?dispatch('deleteCartListBySkuId',item.skuId):'';
			PromiseAll.push(promise);
		});
		
		return Promise.all(PromiseAll);
	},
	// 修改全部产品的状态
	updateAllCartIsChecked({dispatch,state},isChecked){
		let PromiseAll = [];
		state.cartList[0].cartInfoList.forEach(item=>{
			let promise = dispatch('updateCheckedById',{skuId:item.skuId,isChecked});
			PromiseAll.push(promise);
		});
		return Promise.all(PromiseAll);
	}
};
const getters = {
    cartList(state){
        return state.cartList[0]||{}
    },
    //计算出来的购物车数据
    // cartInfoList(state){
    //     return state.cartList
    // }
};
export default({
    state,//数据存放
    mutations,//修改state数据
    actions,//业务逻辑
    getters,//计算属性
   
})